/*
 * MsjReceptorApp.h
 *
 *  Created on: 12/02/2010
 *      Author: San Martín, Matías I.
 */

#ifndef MSJRECEPTORAPP_H_
#define MSJRECEPTORAPP_H_

#include "MsjReceptor.h"
#include "../../Framework/Shared/sem.h"

/**
 * MsjReceptor implementado para que lo use la aplicacion
 */
class MsjReceptorApp: public MsjReceptor {
//------------------------------ CONSTANTES ------------------------------
public:


//--------------------------- ATRIBUTOS ------------------------------------

	/** semaforo que coordina la escritura de los datos de registro */
	Semaphore* _semAccesoInfoPipe;

	/** semaforo que coordina la lectura de los datos de registro */
	Semaphore* _semLeyendoDatos;

	/** memoria donde se guardan los datos de registro */
	t_sharedRegistro* _datosRegitro;

	/** pid del proceso receptor de mensjes que obtiene los mensajes
	 * de la cola de recepcion. Mediantes este pid se le envia una señal
	 * al proceso para que tome los datos a registrar de la memoria */
	pid_t _pidMsjReceptorMid;

//------------------------------ METODOS ------------------------------
public:
	MsjReceptorApp();
	virtual ~MsjReceptorApp();

	void inicializar(Semaphore* semAccesoInfoPipe,
			Semaphore* semLeyendoDatos,
			t_sharedRegistro* datosRegitro,
			pid_t pidMsjReceptorMid);

	virtual void registrarPipe(const std::string& nombrePipe,const IdPlaneta& idPlaneta);
};

#endif /* MSJRECEPTORAPP_H_ */
